﻿/*
SINACOR - BMF&Bovespa
Arquivo: IMonitorAlocacao.cs
Criado em: 30-mar-2010 15:39:45
Arquiteto Responsável: RAMelo.7Comm
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ComponentModel;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common.Exceptions.FaultContracts;


namespace Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract 
{
	/// <summary>
	/// Contrato de serviço monitor de alocação
	/// </summary>
	[ExceptionShielding]
	[ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract", SessionMode = SessionMode.Allowed, Name = "IMonitorAlocacao")]
	public interface IMonitorAlocacao 
	{
		/// <summary>
		/// Transacional: Não
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarAlocacoesRealizadas")]
		List<DataContract.Response.MensagemAlocacaoRealizadaResponse> ConsultarAlocacoesRealizadas(DataContract.Request.FiltroAlocacaoRequest request);

		/// <summary>
		/// Transacional: Não
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarErrosAlocacao")]
		List<DataContract.Response.ErroAlocacaoResponse> ConsultarErrosAlocacao(DataContract.Request.FiltroAlocacaoRequest request);

		/// <summary>
		/// Transacional: Não
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarMensagensAlocacao")]
		List<DataContract.Response.MensagemAlocacaoResponse> ConsultarMensagensAlocacao(DataContract.Request.FiltroMonitorAlocacaoRequest request);

		/// 
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
		[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ReenviarMensagemAlocacao")]
		DataContract.Response.ResultadoReenvioResponse ReenviarMensagemAlocacao(DataContract.Request.DadosReenvioMensagemAlocacaoRequest request);

		/// <summary>
		/// Transacional: Sim
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "TratarMensagemFalha")]
		DataContract.Response.SucessoTratamentoResponse TratarMensagemFalha(DataContract.Request.MensagemAlocacaoRequest request);

		/// <summary>
		/// Transacional: Sim
		/// </summary>
		/// <param name="request"></param>
        [OperationLog]
		[FaultContract(typeof(BusinessFault))]
		[FaultContract(typeof(ValidationFault))]
		[FaultContract(typeof(GeneralFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.InvalidSessionFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.LicensingFault))]
		[FaultContract(typeof(Sinacor.Infra.Common.Exceptions.FaultContracts.AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "TratarMensagensFalhas")]
		void TratarMensagensFalhas(List<DataContract.Request.MensagemAlocacaoRequest> request);
	}

}